package com.jdd.modules.userstaff.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jdd.modules.userstaff.dto.UserDto;
import com.jdd.modules.userstaff.entity.User;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Set;

/**
 * @Description: 人员
 * @Author: jdd
 * @Date: 2022-03-23
 * @Version: V1.0
 */
public interface IUserService extends IService<User> {
    /**
     * 查找用户信息
     *
     * @param page    页数
     * @param userDto 实体
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.jdd.modules.userstaff.dto.UserDto>
     * @throws
     * @author zxl
     * @date 2022/10/26 13:53
     */
    IPage<UserDto> findAllUserInfo(Page<UserDto> page, UserDto userDto);

    /**
     * 通过userId查找用户绑定的设备
     *
     * @param userId 用户id
     * @return java.util.List<java.lang.String>
     * @throws
     * @author zxl
     * @date 2022/10/26 13:53
     */
    List<String> getBindedDevice(String userId);

    /**
     * 下发创建用户指令
     *
     * @param userId 用户id
     * @param list   list
     * @return void
     * @throws
     * @author zxl
     * @date 2022/10/26 13:54
     */
    void createUser(String userId, List<String> list,String compareStr,Integer optionType);

    /**
     * 下发更新用户信息指令
     *
     * @param userId     用户id
     * @param list       需要更新的设备的集合
     * @param compareStr 更新的字符串
     * @return void
     * @throws
     * @author zxl
     * @date 2022/10/26 13:55
     */
    void updateUser(String userId, List<String> list, String compareStr);

    /**
     * 下发删除用户信息的指令
     *
     * @param setList   所要删除的设备的集合
     * @param userId    要删除的用户的id
     * @param type      删除的类型（0，指定人员per_id，1,删除白名单，2删除黑名单，3，删除普通人员，4，删除所有人员），默认写死的type=0
     * @param projectId 当前删除的人员所在的项目id
     * @return void
     * @throws
     * @author zxl
     * @date 2022/10/26 13:56
     */
    void deleteUser(List<String> setList, String userId, int type, String projectId,Integer optionType);

    String getBatchIdByUserId(String userId);

    List<String> QueryUserInitialEquipment(String floorId, String unitId, String buildingId, String areaId, String houseId);

    /**
     * 用户初始化创建时根据所选区域绑定的设备
     * @author zxl
    * @param userId 用户id
     * @date 2022/10/27 14:06
     * @return java.util.List<java.lang.String>
     * @throws Exception
     */
    List<String> QueryUserInitialEquipment(String userId) throws Exception;

    String uploadImgWithBase64(HttpServletRequest req) throws IOException, ServletException;

    User encaUserwithServletRequset(HttpServletRequest req , String faceUrl) throws Exception;

    String caseHttpRequst2String(HttpServletRequest req) throws IOException, ServletException;
}
